containerd 运行时
containerd
作为一个容器运行时,默认是可以直接从 Docker Hub 拉取公开镜像的。但是,如果你需要从 Docker Hub 拉取私有仓库的镜像,或者你需要通过代理服务器来拉取镜像,你需要进行一些额外的配置。
# 检查版本
containerd --version
配置拉取私有仓库的镜像
1、创建 containerd
配置文件:
如果你还没有 containerd
的配置文件,你需要创建一个。配置文件通常位于 /etc/containerd/config.toml
。
2、配置认证信息:
你需要在配置文件中添加 Docker Hub 的认证信息。你可以使用 ctr
命令来生成认证信息:
ctr images pull --user <your-dockerhub-username> docker.io/<your-image>
当系统提示你输入密码时,输入你的 Docker Hub 密码。
ctr
命令会将认证信息存储在 $HOME/.docker/config.json
文件中。
3、在 containerd
配置文件中引用认证信息:
打开 /etc/containerd/config.toml
文件,并添加以下内容来引用认证信息:
[plugins."io.containerd.grpc.v1.cri".registry.configs."docker.io".auth]
username = "<your-dockerhub-username>"
password = "<your-dockerhub-password>"
替换 <your-dockerhub-username>
和 <your-dockerhub-password>
为你的 Docker Hub 用户名和密码。
4、重启 containerd
:
保存配置文件并重启 containerd
服务:
sudo systemctl restart containerd
配置阿里云的私有镜像
1、获取阿里云的认证信息
首先,你需要在阿里云的容器镜像服务上创建一个访问凭证(AccessKey 和 SecretKey)。你可以在阿里云控制台的“访问控制”部分创建这个访问凭证。
2、登录到阿里云的容器镜像服务
使用 docker login
命令登录到阿里云的容器镜像服务:
docker login --username=<your-aliyun-username> registry.cn-shenzhen.aliyuncs.com
系统将提示你输入密码,这里你需要输入你的阿里云访问凭证的 SecretKey。
登录成功后,Docker 的认证信息将被保存到 $HOME/.docker/config.json
文件中。
3、配置 containerd
使用阿里云的容器镜像服务
编辑 containerd
的配置文件,通常位于 /etc/containerd/config.toml
:
sudo nano /etc/containerd/config.toml
在配置文件中添加阿里云的容器镜像服务配置:
[plugins."io.containerd.grpc.v1.cri".registry.configs."registry.cn-shenzhen.aliyuncs.com".auth]
username = "<your-aliyun-username>"
password = "<your-secret-key>"
替换 <your-aliyun-username>
和 <your-secret-key>
为你的阿里云用户名和访问凭证的 SecretKey。
4、重启 containerd
保存配置文件并重启 containerd
服务:
sudo systemctl restart containerd
通过以上步骤,你应该能够从阿里云的容器镜像服务拉取私有仓库的镜像了。
请注意,根据你系统的具体配置和需求,可能还需要进行其他的配置和调整。确保你已经充分了解了 containerd
和阿里云容器镜像服务的相关配置要求和最佳实践。
配置代理服务器
通过
kubectl get events
可以发现国内很多镜像都拉取不了
如果你需要通过代理服务器来拉取镜像,你可以在 containerd
配置文件中进行如下配置:
1、打开 containerd
配置文件:
打开 /etc/containerd/config.toml
文件。
2、添加代理配置:
在相应的位置添加代理配置。例如:
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
endpoint = ["registry.aliyuncs.com/google_containers"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://------.mirror.aliyuncs.com", "https://registry-1.docker.io"]
私有镜像仓库位址请自行阿里云获取
3、重启 containerd
:
保存配置文件并重启 containerd
服务:
sudo systemctl restart containerd
通过上述步骤,你应该能够配置 containerd
以使用 Docker Hub 的私有仓库和代理服务器。请注意,根据你系统的具体配置和需求,可能还需要进行其他的配置和调整。
K3s 配置
k3s 对配置文件的要求是 registries.yaml
,所以我们需要将上面的配置转换一下
sudo vim /etc/rancher/k3s/registries.yaml
mirrors:
"k8s.gcr.io":
endpoint:
- "https://lank8s.cn"
- "https://k8s.lank8s.cn"
"gcr.io":
endpoint:
- "https://gcr.lank8s.cn"
"ghcr.io":
endpoint:
- "https://ghcr.lank8s.cn"
"registry.k8s.io":
endpoint:
- "https://registry.lank8s.cn"
"docker.io":
endpoint:
- "https://------.mirror.aliyuncs.com"
- "https://registry-1.docker.io"
配置完后重启一下 k3s
sudo systemctl restart k3s